//package com.jt.resource.config;
//
//import org.springframework.boot.web.servlet.FilterRegistrationBean;
//import org.springframework.context.annotation.Bean;
//import org.springframework.core.Ordered;
//import org.springframework.web.cors.CorsConfiguration;
//import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
//import org.springframework.web.filter.CorsFilter;
//
///**
// * @author 金帮嘉诚 @date 2021-08-22 星期日 14:11
// */
////@Configuration//将过滤器设置在网关层面 注释掉这个注解就不被spring管理
//public class CorsFilterConfig {
//    @Bean
//    public FilterRegistrationBean<CorsFilter>
//    filterRegisterBean() {
//        //1.构建基于URL方式的跨域配置对象
//        UrlBasedCorsConfigurationSource configurationSource =
//                new UrlBasedCorsConfigurationSource();
//
//        //2.构建对URL请求规则配置
//        //配置 对象
//        CorsConfiguration configuration =new CorsConfiguration();
//        //2.1
//        configuration.addAllowedHeader("*");//允许所有请求头跨域
////        configuration.addAllowedMethod(HttpMethod.GET);
//        //2.2
//        configuration.addAllowedMethod("*");//允许 所有请求方式跨域
//        //2.3
//        configuration.addAllowedOrigin("*");//允许 所有ip及端口 跨域
//        //2.4
//        configuration.setAllowCredentials(true);//允许携带cookie跨域访问 默认不允许
//        //2.5 将这个过滤器配置到具体的url
//        configurationSource.registerCorsConfiguration("/**",configuration);
//
//        //3.注册过滤器
//        FilterRegistrationBean<CorsFilter> filterRegistrationBean =
//                new FilterRegistrationBean<>(
//                        new CorsFilter(configurationSource));
//        //设置过滤器优先级
//        filterRegistrationBean.setOrder(Ordered.HIGHEST_PRECEDENCE);//数字越小优先级越高
//        return filterRegistrationBean;
//
//    }
//
//}
package com.jt.resource.config;

import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.core.Ordered;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;

/**
 * 基于过滤器做跨域配置
 */
//@Configuration
public class CorsFilterConfig {
    //Spring MVC中注册过滤器使用FilterRegistrationBean对象
    @Bean
    public FilterRegistrationBean<CorsFilter>  filterRegistrationBean(){
        //1.构建基于Url方式的跨域配置对象
        UrlBasedCorsConfigurationSource configSource=
                new UrlBasedCorsConfigurationSource();
        //2.构建url请求规则配置
        CorsConfiguration config=new CorsConfiguration();
        //2.1允许所有请求头跨域
        config.addAllowedHeader("*");
        //2.2允许所有请求方式(get,post,put,...)
        config.addAllowedMethod("*");//get,post,
        //2.3允许所有请求ip,port跨域
        config.addAllowedOrigin("*");//http://ip:port
        //2.4允许携带cookie进行跨域
        config.setAllowCredentials(true);
        //2.5将这个跨域配置应用到具体的url
        configSource.registerCorsConfiguration("/**",config);
        //3.注册过滤器
        FilterRegistrationBean fBean=
                new FilterRegistrationBean(
                        new CorsFilter(configSource));
        //设置过滤器优先级
        fBean.setOrder(Ordered.HIGHEST_PRECEDENCE);
        return fBean;
    }
}
